
typeof /a/g; // function or object

/*
 * 在任何值上调用Object原生的toString() 方法, 都会返回一个 '[object NativeConstructorName]' 格式的字符串.
 * 开发人员自定义的任何构造函数都将返回'[object Object]'.
 * 
 * Object.prototype.toString() 也可能被修改, 以下判断基于该方法未被修改.
 */

// 原生构造函数的对象
Object.prototype.toString.call([]);			// "[object Array]"
Object.prototype.toString.call(new Date());	// "[object Date]"
Object.prototype.toString.call({});			// "[object Object]"

// 自定义构造函数的对象
Object.prototype.toString.call(jQuery('body'));				// "[object Object]"
Object.prototype.toString.call(new function Person(){});	// "[object Object]"

// 都是 Function, 有没有
Object.prototype.toString.call(Array);		// "[object Function]"
Object.prototype.toString.call(Object);		// "[object Function]"
Object.prototype.toString.call(Function);	// "[object Function]"
Object.prototype.toString.call(function person(){});	// "[object Function]"

// html元素
Object.prototype.toString.call(document);			// "[object HTMLDocument]"
Object.prototype.toString.call(document.body);		//"[object HTMLBodyElement]"
Object.prototype.toString.call(jQuery('div')[0]);	// "[object HTMLDivElement]"
